home *** CD-ROM | disk | FTP | other *** search
- // Creador de aventuras conversacionales ---> Navi Dj/PhyMosys
- // Módulo principal
-
- extern "C" {
- #include <string.h>
- #include <stdio.h>
- }
- #include <iostream.h>
- #include "objects.hpp" // Inclusión de las clases objetos y
- #include "room.hpp" // habitaciones.
-
- char *des1="Estas en una gran sala llena de polvo y... telarañas.";
- char *des2="Esto es una habitación muy oscura y llena de polvo.";
- char *des3="Estas en una pequeña sala con un gran ventanal.";
-
- char *obj1="Es un sable muy pesado. Debe ser una buena arma.";
- char *obj2="Es una botella llena de agua, puede ser util.";
- char *obj3="Se trata de una bolsa llena de polvo.";
- char *obj4="Con estos prismaticos puedo ver muy lejos.";
-
- int main(void)
- {
- Room h1(des1); // Definimos las salas.
- Room h2(des2);
- Room h3(des3);
- h1.conecta(&h2, R_SUR); // Conectamos las salas.
- h1.conecta(&h3, R_NORTE);
-
- objeto o1("Sable", obj1); // Cargamos los objetos.
- objeto o2("Botella", obj2);
- objeto o3("Bolsa", obj3);
- objeto o4("Prismaticos", obj4);
-
- h1.deja_obj(&o1); // Dejamos los objetos donde corresponde.
- h1.deja_obj(&o2);
- h2.deja_obj(&o3);
- h3.deja_obj(&o4);
-
- char comando[80], // Cadena donde cogemos los comandos.
- param[80]; // Cadena para pillar los parámetros.
- Room *sala=&h1; // Apunta a la sala actual.
- Room *aux;
- objeto *aux_o; // Objetos auxiliares.
-
- objeto *obj[20]; // Array con los objetos que lleva el
- int num=0; // personaje y número de estos.
-
- for(;;) { // Bucle sin fin.
- sala->describe();
- sala->salidas(); // Muestra la descripción y las salidas.
- cout << endl << ">";
- gets(comando); // Leemos el comando.
- strlwr(comando); // Convertimos a minusculas.
-
- aux=sala; // Guardar temporalmente la sala.
- if(!strcmp(comando, "norte"))
- sala=sala->ir_a(R_NORTE);
- if(!strcmp(comando, "sur"))
- sala=sala->ir_a(R_SUR);
- if(!strcmp(comando, "este"))
- sala=sala->ir_a(R_ESTE);
- if(!strcmp(comando, "oeste"))
- sala=sala->ir_a(R_OESTE); // Nos movemos por el mundo.
- if(sala==NULL) {
- sala=aux; // Comprobación de que el moviento es correcto.
- cout << "No puedes ir en esa dirección." << endl;
- }
-
- if(!strcmp(comando, "i")) { // Hacer un inventario.
- cout << "Tengo: ";
- for(int i=0; i<num; i++) {
- obj[i]->es_nombre(); // Escribimos todo lo que hay.
- cout << ", ";
- }
- cout << endl;
- }
- // Para coger un objeto mostraremos
- if(!strcmp(comando, "coger")) { // una pregunta.
- cout << "¿Que quieres coger? ";
- gets(param);
- if((aux_o=sala->coge_obj(param))==NULL)
- cout << "No puedo ver eso..." << endl;
- else
- obj[num++]=aux_o; // Añadimos a la lista.
- }
- if(!strcmp(comando, "dejar")) {
- cout << "¿Que quieres dejar? ";
- gets(param); // Para dejar los objetos tambien se muestra
- for(int i=0; i<num; i++) // la pregunta.
- if(obj[i]->es_un(param)) {
- sala->deja_obj(obj[i]);
- for(int j=i; j<num-1; j++)
- obj[j]=obj[j+1];
- --num;
- break;
- }
- }
-
- if(!strcmp(comando, "help")) // Ayuda con los comandos.
- cout << " Puedes usar los siguientes comandos:" << endl\
- << " norte, sur, este, oeste -> Te mueves por el mundo" << endl\
- << " i -> Inventario de objetos" << endl\
- << " coger, dejar -> Te permite coger o dejar objetos" << endl\
- << " quit -> Termina la ejecución del juego" << endl << endl;
- if(!strcmp(comando, "quit"))
- break; // Si el usuario se quiere ir...
- }
-
- return 0; // Fin de la partida.
- }
-